import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif
//webSocket的url集合
let webUrl = "127.0.0.1:9080"
// let webUrl = "192.168.43.10:9080"
Vue.prototype.webUrl = webUrl
//后端接口url集合
let api = "http://127.0.0.1:9080"
// let api = "http://192.168.43.10:9080"
//设置全局url对象
Vue.prototype.url={
	//校验Token是否过期
	tokentimeout:api+"/user/tokenTimeout",
	//登录接口路径
	login:api+"/user/login",
	//退出登录
	loginout:api+"/user/logout",
	//获取token查询用户信息
	getuserinfo:api+"/user/info",
	//根据角色id获取角色具体信息
	searchRoleById:api+"/role/info",
	//验证密码
	validPassword:api+"/user/valid/password",
	//修改密码
	updatePassword:api+"/user/update/password",
	//修改自我介绍
	updateDescription:api+"/user/update/description",
	//修改座右铭
	updateMotto:api+"/user/update/motto",
	//获取用户账号
	getAccount:api+"/user/account",
	//获取邮箱
	getEmail:api+"/user/email",
	//修改账号
	updateAccount:api+"/user/update/account",
	//上传文件
	uploadCosFile:api+"/cos/uploadCosFile",
	//修改头像
	updateAvater:api+"/user/update/avater",
	//获取性别字典数据
	getDict:api+"/dict/type",
	//获取组织数据
	getOrganizationByType:api+"/organization/type",
	//根据父级Id获取组织信息
	getOrganizationByParentId:api+"/organization/parent",
	//根据组织id获取岗位信息
	getPostByOrganizationId:api+"/post/organization",
	//获取分页的消息列表
	searchMessageByPage:api+"/message/searchMessageByPage",
	//根据消息id查询消息详情
	searchMessageById:api+"/message/searchMessageById",
	//根据消息id将消息更新为已读状态
	updateUnreadMessage:api+"/message/updateUnreadMessage",
	//根据消息引用Id删除消息内容
	deleteMessageRefById:api+"/message/deleteMessageRefById",
	//刷新当前消息未读内容
	refreshMessage:api+"/message/refreshMessage",
	// 修改当前用户信息
	updateUserInfo:api+"/user/update/userInfo",
	//提交审批
	applyApproval:api+"/approval/apply_approval",
	//查询当前审批状态
	curApproval:api+"/approval/cur_approval",
	//审批撤销
	setCut:api+"/approval/set_cut",
	//根据组织id获取其管理者
	getAdmins:api+"/admin/getAdmins",
	//根据用户id更新用户登记状态
	updateRegistration:api+"/user/updateRegistration",
	//获取除了当前用户id的组织列表
	listExpectCurIds:api+"/organization/listExpectCurIds",
	//获取除了当前用户id的组织列表
	getPostByOrganizationId:api+"/post/organization",
	//获取当前所有组织架构列表
	getAllOrganizationList:api+"/organization/allList",
	//根据用户id排除当前组织下所拥有的职位
	getPostListExpectUSerId:api+"/post/getPostListExpectUSerId",
	//提交一条转岗记录
	setTransfer:api+"/post/setTransfer",
	//根据转岗id修改转岗的信息
	updateTransferInfo:api+"/post/updateTransferInfo",
	//修改用户组织岗位
	updateUserOrgAndPost:api+"/user/updateUserOrgAndPost",
	//提交一条离职记录
	setDimission:api+"/user/setDimission",
	//修改用户为离职
	updateUserDimission:api+"/user/updateUserDimission",
	//创建一条报销记录
	setReimbursement:api+"/document/setReimbursement",
	//根据报销记录id获取报销记录实体
	getReimburseMent:api+"/document/getReimburseMent",
	//创建一条补助记录
	setSubsidy:api+"/document/setSubsidy",
	//根据补助记录id获取补助记录实体
	getSubsidy:api+"/document/getSubsidy",
	//创建一条用印记录
	setSeal:api+"/document/setSeal",
	//根据用印记录id获取用印记录实体
	getSeal:api+"/document/getSeal",
	//搜索通讯录
	searchUserContactList:api+"/user/searchUserContactList",
	//分页查询工资列表
	searchSalaryByPage:api+"/document/searchSalaryByPage",
	//根据id查询工资单
	searchSalaryById:api+"/document/searchSalaryById",
	//根据工资id删除工资
	deleteSalaryById:api+"/document/deleteSalaryById",
	//获取分页日报列表
	searchWorkDailyByPage:api+"/work/searchWorkDailyByPage",
	//创建日报
	setWorkDaily:api+"/work/setWorkDaily",
	//根据日报id查询日报详情
	searchWorkDailyDetialById:api+"/work/searchWorkDailyDetialById",
	//获取当前用户的工作安排
	getArrange:api+"/work/getArrange",
	//修改报销状态
	setReimburseMentIsEnable:api+"/document/setReimburseMentIsEnable",
	//根据报销状态查询报销记录
	getReimburseMentByIsEnable:api+"/document/getReimburseMentByIsEnable",
	//修改补助状态
	setSubsidyIsEnable:api+"/document/setSubsidyIsEnable",
	//根据补助状态查询补助记录
	getSubsidyByIsEnable:api+"/document/getSubsidyByIsEnable",
	//修改用印状态
	setSealIsEnable:api+"/document/setSealIsEnable",
	//根据用印状态查询用印记录
	getSealByIsEnable:api+"/document/getSealByIsEnable",
	//创建一条请假记录
	setLeave:api+"/document/setLeave",
	//修改请假状态
	setLeaveIsEnable:api+"/document/setLeaveIsEnable",
	//根据请假状态查询请假记录
	getLeaveByIsEnable:api+"/document/getLeaveByIsEnable",
	//根据id获取请假记录
	getLeave:api+"/document/getLeave",
	//创建一条出差记录
	setTravle:api+"/document/setTravle",
	//修改出差状态
	setTravleIsEnable:api+"/document/setTravleIsEnable",
	//根据出差状态查询出差记录
	getTravleByIsEnable:api+"/document/getTravleByIsEnable",
	//根据id获取出差记录
	getTravle:api+"/document/getTravle",
	//考勤签到
	checkin:api+"/attendance/checkin",
	//判断当前是否可以考勤
	checkIsAttendance:api+"/attendance/isCheckin",
	//创建人脸模型
	createFaceModel:api+"/attendance/createFaceModel",
	//查询用户本月签到
	searchMonthCheckin:api+"/attendance/searchMonthCheckin",
	//签到结果
	searchTodayCheckin:api+"/attendance/searchTodayCheckin"
}
//设置通用的ajax请求
Vue.prototype.ajax = function(url,method,data,fun){
	uni.request({
		//请求的url
		"url": url,
		//请求方法GET，POST，PUT，DELETE
		"method": method,
		//请求头相关内容
		"header": {
			token: uni.getStorageSync('token')
		},
		//向后端传递的data对象
		"data": data,
		//成功时的回调方法
		success: function(resp) {
			//返回的HTTP状态码为401时表示登录失败跳转到登录界面
			if (resp.data.code == 40100) {
				//弹出失败弹框
				uni.showToast({
					title: resp.data.msg,
					icon: 'error'
				});
				//移除本地token
				setTimeout(function(){
					uni.removeStorageSync("token")
					uni.clearStorageSync()
					//跳转到登录页面
					uni.redirectTo({
						url:'/pages/login/login'
					});
				},2000);
				
			}else if(resp.data.code==40400){
				uni.showToast({
					icon: 'error',
					title: resp.data.msg
				})
				uni.removeStorageSync("token");
				uni.redirectTo({
					url:'/pages/login/login'
				});
			}
			//返回的HTTP状态码为200并且对应的业务状态码为20000时，这里约定后端的所有业务执行成功返回时的业务状态码为20000
			else if (resp.statusCode == 200 && resp.data.code == 20000) {
				//获取后端响应的数据
				let data = resp.data
				//判断其中是否存在token数据如果存在就说明要么是刷新令牌成功要么是登录成功
				if (data.hasOwnProperty("token")) {
					//获取具体的token数据
					let token = data.token
					//将token数据存储到小程序中
					uni.setStorageSync("token", token)
				}
				fun(resp)
			}
			 //可能返回的不是上述的状态码时具体的响应数据从后端获取
			else {
				uni.showToast({
					icon: 'none',
					title: resp.data.msg
				})
			}
		}
	})
}
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif
function padZero(num) {
	    return num < 10 ? '0' + num : num;
}
//将"2002-02-01T18:20:53"转换为yyyy-MM-dd hh:mm:ss格式
Vue.prototype.formatTime=function(dateString){
	// 创建日期对象
	    var date = new Date(dateString);
	    
	    // 获取年、月、日、时、分、秒
	    var year = date.getFullYear();
	    var month = padZero(date.getMonth() + 1);
	    var day = padZero(date.getDate());
	    var hours = padZero(date.getHours());
	    var minutes = padZero(date.getMinutes());
	    var seconds = padZero(date.getSeconds());
	
	    // 拼接成需要的格式
	    var formattedDate = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
	    
	    // 返回格式化后的日期字符串
	    return formattedDate;
}
//将"2002-02-01T18:20:53"转换为yyyy-MM-dd格式
Vue.prototype.formatDataTime=function(dateString){
	// 创建日期对象
	    var date = new Date(dateString);
	    
	    // 获取年、月、日、时、分、秒
	    var year = date.getFullYear();
	    var month = padZero(date.getMonth() + 1);
	    var day = padZero(date.getDate());
	    var hours = padZero(date.getHours());
	    var minutes = padZero(date.getMinutes());
	    var seconds = padZero(date.getSeconds());
	
	    // 拼接成需要的格式
	    var formattedDate = year + '-' + month + '-' + day;
	    
	    // 返回格式化后的日期字符串
	    return formattedDate;
}
//验证密码格式是否正确
Vue.prototype.checkValidPassword = function(data, name) {
	if (data == null || data.length == 0) {
		uni.showToast({
			title: name+'不能为空',
			icon: 'error'
		});
		return true
	}
	if(!/^[a-zA-Z0-9]{4,8}$/.test(data)){
		uni.showToast({
			title: name+'密码格式不正确,位数包含4-8位，只能是数字和字母混合组成必须至少包含一个数字和字母',
			icon: 'none'
		});
		return true
	}
	return false
}
//验证账号格式是否正确
Vue.prototype.checkValidAccount = function(data, name) {
	if (data == null || data == "") {
		uni.showToast({
			icon: "error",
			title: name + "不能为空"
		})
		return true
	} else if (!/^1[3-9]\d{9}$/.test(data)) {
		uni.showToast({
			icon: "error",
			title: name + "格式不正确"
		})
		return true
	}
	return false
}
//验证姓名格式是否正确
Vue.prototype.checkValidName = function(data, name) {
	if (data == null || data == "") {
		uni.showToast({
			icon: "none",
			title: name + "不能为空"
		})
		return true
	} else if (!/^[\u4e00-\u9fa5]{2,15}$/.test(data)) {
		uni.showToast({
			icon: "none",
			title: name + "内容不正确"
		})
		return true
	}
	return false
}
//验证邮箱格式是否正确
Vue.prototype.checkValidEmail = function(data, name) {
	if (data == null || data == "") {
		uni.showToast({
			icon: "none",
			title: name + "不能为空"
		})
		return true
	} else if (!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(data)) {
		uni.showToast({
			icon: "none",
			title: name + "内容不正确"
		})
		return true
	}
	return false
}
// 验证身份证号是否正确
Vue.prototype.checkValidIdCard = function(data,name){
	if(data == null || data == ""){
		uni.showToast({
			icon: "none",
			title: name + "不能为空"
		})
		return true
	}else if(!/^([1-9]\d{5})(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}([0-9]|X)$/.test(data)){
		uni.showToast({
			icon: "none",
			title: name + "内容不正确"
		})
		return true
	}
	return false
}